Most prior personal computers include many types of memory storage devices. Hard magnetic disk drives are used typically for mass storage, while different types of semiconductor memories are used for other purposes.
The non-volatility of hard magnetic disk drives is one of the chief reasons for their use. They may be turned on and off without loss of data. Hard drives store data on concentric tracks. Each track includes several sectors, each of which is typically 512 bytes in length. Reads and writes to magnetic disk drives occur one bit at a time.
A typical user file stored on a magnetic disk drive occupies many sectors, randomly located on the surface of the disk drive. A file allocation table (FAT) allows for the location of each sector of the file by storing a chain of pointers for the file. Each pointer points to the next sector of the file.
Hard drives suffer from a number of disadvantages. Their size, their height in particular, often makes them unattractive for use in portable and lap top computers. The height of a hard disk drive has often been a limiting factor in attempts to reduce computer size to make computers more portable. Hard drives also consume relatively large amounts of power, which makes them even less attractive for computers that are battery powered.
Hard drives are less than ideal for use in computers that will be used out-of-doors. Magnetic disk drives are extremely sensitive to vibration and shock. Additionally, magnetic drives do not tolerate well the dust and humidity of associated with much of the great outdoors.
Semiconductor memories, also referred to as solid state memories, do not suffer from many of the disadvantages of magnetic disk drives. They are small and rugged and consume significantly less power than magnetic drives.
One type of non-volatile semiconductor memory is the FLASH electrically erasable programmable read only memory (FLASH memory). FLASH memories can be programmed by the user and once programmed retain their data until erased. FLASH memories are erased by erasing a block of memory at a time. A block is a relatively large amount of data, 64 Kbytes or 65,536 bytes.
A FLASH memory cell is erased when the net charge on the floating gate is neutral. An erased FLASH bit is referred to as a "1." Conversely, a FLASH memory cell is programmed when the net charge on the floating gate is negative. A programmed FLASH bit is referred to as a "0." A FLASH memory cell cannot be reprogrammed without a prior erasure with one exception. Any FLASH bit can be programmed to a 0 at any time.
In some prior FLASH memories the programming and erasure is controlled internally by a write state machine or a command register. Internal control of programming and erasure lessens the knowledge and time required to program and erase the FLASH memories. However, FLASH erase time times remain relatively slow despite internal control. Erase cycle time is on the order of one to two seconds. If an erase must occur before every write or re-write of a sector of data it is not possible to approach magnetic disk drive write times using FLASH memory.
In some FLASH memories, data is written to a new location each time the data is revised, rather than erasing the previous physical location and writing the revised data to that same physical location. As a result of this practice, the FLASH memory becomes sprinkled with invalid data which should be recovered. However, reclamation of the memory space occupied by this invalid data can be overrun during prolonged user reads or writes to the FLASH memory.